//
// Created by chizuru on 2025/10/10.
//

#pragma once
#include <string>

static std::string printModbusErrorMessage(uint8_t errorCode) {
    switch (0x0f & errorCode) {
        case 0x01: return "Illegal Function"; /* （非法功能）——该从站不支持该功能码 */
        case 0x02: return "Illegal Data Address"; /* 非法数据地址）——请求的地址不存在或越界 */
        case 0x03: return "Illegal Data Value"; /* （非法数据值）——写入的数据值无效或不被允许 */
        case 0x04: return "Slave Device Failure"; /* （从站设备故障）——从站内部错误，无法执行请求 */
        case 0x05: return "Acknowledge"; /*（确认）——从站已接收并在处理（通常用于需要较长时间的操作） */
        case 0x06: return "Slave Device Busy"; /* （设备忙）——从站当前正忙，稍后重试 */
        case 0x08: return "Memory Parity Error"; /* （存储校验错误）——从站内部的存储校验失败 */
        case 0x0a: return "Gateway Path Unavailable"; /* （网关路径不可用）——网关无法到达目标子网/设备 */
        case 0x0b: return "Gateway Target Device Failed to Respond"; /* （网关目标设备无响应） */
        default: return "Unknown error";
    }
}
